--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / MicronWasmLoader.js
Displaying Raw • Download
meshchatx/src/frontend/js/MicronWasmLoader.js e0c363bb90f7a8c57f3e9f1a044d8203a2fce3dc (e0c363bb) Text, 3.23 KB
T8b949e/**
* Lazy-load micron-parser-go WASM (see https://github.com/Quad4-Software/Micron-Parser-Go ).
* Requires wasm_exec.js from Go and micron-parser-go.wasm under /vendor/micron-parser-go/.
* Files are fetched at production build time (scripts/fetch-micron-wasm.mjs); omitted builds set VITE_MICRON_WASM_BUNDLED=false.
*/
Tff7b72let Te6edf3resolvedPromise Tff7b72= Tff7b72nullTb4b4b4;
T8b949e/** True when WASM artifacts were present at Vite build time (not runtime probing). */
Tff7b72export Tff7b72function Te6edf3isMicronWasmBundledTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657globalThis Tff7b72!== Ta5d6ff"undefined" Tff7b72&& Tff7b72typeof Tffa657globalThisTb4b4b4.Te6edf3__MESHCHATX_TEST_MICRON_WASM_BUNDLED__ Tff7b72=== Ta5d6ff"boolean"Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657globalThisTb4b4b4.Te6edf3__MESHCHATX_TEST_MICRON_WASM_BUNDLED__Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72importTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3envTb4b4b4.Te6edf3VITE_MICRON_WASM_BUNDLED Tff7b72=== Ta5d6ff"true"Tb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3baseUrlTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3root Tff7b72= Tff7b72importTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3envTb4b4b4.Te6edf3BASE_URL Tff7b72|| Ta5d6ff"/"Tb4b4b4;
Tff7b72return Ta5d6ff`Tffd700${Te6edf3rootTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\/?$/Tb4b4b4, Ta5d6ff"/"Tb4b4b4)Tffd700}Ta5d6ffvendor/micron-parser-goTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3injectScriptTb4b4b4(Te6edf3srcTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3id Tff7b72= Ta5d6ff"meshchatx-micron-wasm-exec"Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4, Te6edf3rejectTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3s Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"script"Tb4b4b4)Tb4b4b4;
Te6edf3sTb4b4b4.Te6edf3id Tff7b72= Te6edf3idTb4b4b4;
Te6edf3sTb4b4b4.Tff7b72async Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3sTb4b4b4.Te6edf3src Tff7b72= Te6edf3srcTb4b4b4;
Te6edf3sTb4b4b4.Te6edf3onload Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3resolveTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3sTb4b4b4.Te6edf3onerror Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3rejectTb4b4b4(Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffMicron WASM: failed to load script Tffd700${Te6edf3srcTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3headTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72async Tff7b72function Te6edf3instantiateOnceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3WebAssembly Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"Micron WASM: WebAssembly is not available"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3root Tff7b72= Te6edf3baseUrlTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3injectScriptTb4b4b4(Ta5d6ff`Tffd700${Te6edf3rootTffd700}Ta5d6ff/wasm_exec.jsTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657globalThisTb4b4b4.Te6edf3Go Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"Micron WASM: Go runtime missing after wasm_exec.js load"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3wasmUrl Tff7b72= Ta5d6ff`Tffd700${Te6edf3rootTffd700}Ta5d6ff/micron-parser-go.wasmTa5d6ff`Tb4b4b4;
Tff7b72const Te6edf3go Tff7b72= Tff7b72new Tffa657globalThisTb4b4b4.Te6edf3GoTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3resultTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3result Tff7b72= Tff7b72await Te6edf3WebAssemblyTb4b4b4.Te6edf3instantiateStreamingTb4b4b4(Te6edf3fetchTb4b4b4(Te6edf3wasmUrlTb4b4b4)Tb4b4b4, Te6edf3goTb4b4b4.Te6edf3importObjectTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72const Te6edf3buf Tff7b72= Tff7b72await Te6edf3fetchTb4b4b4(Te6edf3wasmUrlTb4b4b4)Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rTb4b4b4.Te6edf3okTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff`Ta5d6ffMicron WASM: fetch failed (Tffd700${Te6edf3rTb4b4b4.Te6edf3statusTffd700}Ta5d6ff)Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3rTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3result Tff7b72= Tff7b72await Te6edf3WebAssemblyTb4b4b4.Te6edf3instantiateTb4b4b4(Te6edf3bufTb4b4b4, Te6edf3goTb4b4b4.Te6edf3importObjectTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3goTb4b4b4.Te6edf3runTb4b4b4(Te6edf3resultTb4b4b4.Te6edf3instanceTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657globalThisTb4b4b4.Te6edf3micronConvert Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"Micron WASM: micronConvert was not registered"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72export Tff7b72function Te6edf3invalidateNomadMicronWasmPreloadTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3resolvedPromise Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
T8b949e/**
* Ensures micron-parser-go WASM is initialized; resolves true when micronConvert is callable.
*/
Tff7b72export Tff7b72function Te6edf3preloadNomadMicronWasmTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isMicronWasmBundledTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657globalThisTb4b4b4.Te6edf3micronConvert Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3resolvedPromise Tff7b72=== Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3resolvedPromise Tff7b72= Tb4b4b4(Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3instantiateOnceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72typeof Tffa657globalThisTb4b4b4.Te6edf3micronConvert Tff7b72=== Ta5d6ff"function"Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3resolvedPromise Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3resolvedPromiseTb4b4b4;
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────